// SPDX-License-Identifier: SOME IDENTIFIER

pragma solidity ^0.8.10;

interface SomeInterface1 {

function someFunction1() external pure returns(string

memory);

}

interface SomeInterface2 {

function someFunction2() external pure returns(string

memory);

}

contract ImplementorContract is SomeInterface1,

SomeInterface2 {

function someFunction1() public override pure returns(string

memory) {

return “some message 1”;

}

function someFunction2() public override pure returns(string

memory) {

return “some message 2”;

}

}

2.5.22 Creating and Destroying Contracts

We can instantiate a contract from another contract just by using the

“new” keyword. Using the new keyword, we instantiate the new

instance of the contract and use that newly created contract

instance. Let’s do this with an example.

Deploy only the ClientContract and run invokeCallMe and watch how

the other contract works, even if not deployed, as shown in the

following example:

// SPDX-License-Identifier: SOME IDENTIFIER

pragma solidity ^0.8.10;

contract ServerContract {